/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controllers;
import play.*;
import play.mvc.*;
import play.data.*;
import static play.data.Form.*;
import play.db.jpa.*;
import views.html.*;

import javax.persistence.*;

import play.data.format.*;
import play.data.validation.*;

import models.*;


public class Seguridad extends Controller {
public static Result blank() {
return ok(seguridad.render());
}

@Transactional(readOnly=true)
public static Result newUser() {
Form<Usuario> usuarioForm = form(Usuario.class);
return ok(
createForm.render(usuarioForm)
);
}

public static Result list() {
return ok(seguridad.render());
}

/*
  @Transactional(readOnly=true)
    public static Result list(int page, String sortBy, String order, String filter) {
        return ok(
            list.render(
                Usuario.page(page, 10, sortBy, order, filter),
                sortBy, order, filter
            )
        );
    }
    

 @Transactional(readOnly=true)
public static Result list(){
    return ok(listUsuarios.render(Usuario.page()));
}*/
/*
public static Result login() {
return ok(login.render());
}*/

public static Result logout() {
    session().clear();
    return ok(seguridad.render());
}
/**
* Creacion de nuevo usuario
*/
@Transactional
public static Result save() {
Form<Usuario> usuarioForm = form(Usuario.class).bindFromRequest();
System.out.println("FORMULARIO de USUARIO: " + usuarioForm);
if(usuarioForm.hasErrors()) {
return badRequest(createForm.render(usuarioForm));
}
if (usuarioForm.get().esAdministrador != null) {
usuarioForm.get().administrador = new Integer(1);
}
else {
usuarioForm.get().administrador = new Integer(0);
}
usuarioForm.get().save();
flash("success",  "Usuario  "  +  usuarioForm.get().login  +  "  ha  sido creado.");
return ok(seguridad.render());
}


   // GET, formulario de login al sistema
    public static Result login() {
        session().clear();
        Form<Login> formulario = form(Login.class);
        return ok(login.render(formulario));    
    }
@Transactional
    public static Result ingresar() {
        Form<Login> formulario = form(Login.class).bindFromRequest();
          if(formulario.hasErrors()) {
                return badRequest(login.render(formulario));
          } 
        if(formulario.get().login == "" || formulario.get().clave == "") {
            flash("invalid", "Debe ingresar usuario y clave");
            return badRequest(login.render(formulario));
        }

        Usuario user = Usuario.findById(formulario.get().login);

        if (user!=null){
            if (user.login.equals(formulario.get().login) && user.password.equals(formulario.get().clave)){
            //flash("succes", "Bienvenido!!! "+user.nombreCompleto);
            session("login", user.login);
            session("user", user.nombreCompleto);
            }
            else{
                flash("invalid", "Usuario y/o clave incorrecto/s");
                return badRequest(login.render(formulario));
            }
        }
        else{
                flash("invalid", "Usuario y/o clave incorrecto/s");
                return badRequest(login.render(formulario));
            }
        
     
        return ok(seguridad.render());
        
    }
    
   @Transactional(readOnly=true)
       public static Result edit(String login) {
        Form<Usuario> usuarioForm = form(Usuario.class).fill(
            Usuario.findById(login)
        );
        return ok(
            editForm.render(login,usuarioForm)
        );
        }
      
       @Transactional
       public static Result update(String login) {
        Form<Usuario> usuarioForm = form(Usuario.class).bindFromRequest();
        if(usuarioForm.hasErrors()) {
            return badRequest(editForm.render(login, usuarioForm));
        }
        usuarioForm.get().update(login);
        flash("success", "Usuario " + usuarioForm.get().login + " ha sido actualizado");
        return redirect("/seguridad/list");
        
        }
      
        @Transactional
    public static Result delete(String login) {
        Usuario.findById(login).delete();
        flash("success", "Usuario Eliminado");
         return redirect("/seguridad/list");
    }
    
        
        
}